package io.yunho.yunho.interview.one.fatherandson;

/**
 * @author: Jason
 * @date: 2021/3/9 8:39
 * @description:
 * 初始化父类<clinit>:
 * （1）静态类变量显示赋值代码  method()
 * （2）静态代码块
 * 父类实例化：
 *
 * 非静态方法前面其实有一个默认的对象 this
 * this在构造器（或<init>）它表示的是正在创建的对象，因为这里Son正在被创建，因此test()执行的是子类重写的代码(面向对象的多态)
 */
public class Father {
    private int i = test();
    private static int j = method();

    static {
        System.out.println("01 static run");
    }
    Father(){
        System.out.println("02 Father run");
    }
    {
        System.out.println("03 unstatic run");
    }
// 声明为私有方法 不会被继承或重写
//    private static int method() {
//        System.out.println("05 method run");
//        return 1;
//    }
//    private int test() {
//        System.out.println("04 test run return 1");
//        return 1;
//    }
    public static int method() {
        System.out.println("05 method run");
        return 1;
    }
    public int test() {
        System.out.println("04 test run return 1");
        return 1;
    }
}
